import { DataSource } from 'typeorm';
import { Role, RoleType } from '../../../entities/role.entity';

/**
 * 角色种子数据
 * 负责初始化系统基础角色
 */
export class RoleSeed {
  constructor(private dataSource: DataSource) {}

  /**
   * 运行角色种子
   */
  async run(): Promise<void> {
    console.log('开始初始化角色数据...');

    const roleRepository = this.dataSource.getRepository(Role);

    // 系统基础角色
    const basicRoles = [
      { name: '系统管理员', code: 'admin', description: '系统管理员，具有所有权限', type: RoleType.SYSTEM },
      { name: '普通用户', code: 'user', description: '普通用户，具有基本操作权限', type: RoleType.CUSTOM },
      { name: '访客', code: 'guest', description: '访客用户，只有查看权限', type: RoleType.CUSTOM },
      // 可以根据需要添加更多角色
    ];

    // 创建基础角色
    for (const roleData of basicRoles) {
      try {
        // 使用查询构建器插入数据，并使用orIgnore忽略重复记录
        await this.dataSource
          .createQueryBuilder()
          .insert()
          .into(Role)
          .values(roleData)
          .orIgnore()
          .execute();
          
        console.log(`确保角色存在: ${roleData.name} (${roleData.code})`);
      } catch (error) {
        console.log(`角色创建失败: ${roleData.name} (${roleData.code}) - ${error.message}`);
      }
    }

    console.log('角色数据初始化完成');
  }
} 